package com.yyxk.thousandtime.webutils;

import android.content.Context;
import android.os.Handler;
import android.os.Message;

import com.yyxk.thousandtime.ibase.IBaseView;


/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 项目名称：WheelMedical
 * 包名:com.yyxk.wheelmedical.webutils
 * 类描述：
 * 创建人：Random
 * 创建时间：11:20
 * 修改人：Random
 * 修改时间：11:20
 * 修改备注：
 */
public class ProgressDialogHandler<V extends IBaseView> extends Handler {

    public static final int SHOW_PROGRESS_DIALOG = 1;
    public static final int DISMISS_PROGRESS_DIALOG = 2;
    public static final int SHOW_ERROR=3;
    public static final int SHOW_EMPTY=4;


    private Context context;
    private boolean cancelable;
    private ProgressCancelListener mProgressCancelListener;
    private V mView;

    public ProgressDialogHandler(Context context, ProgressCancelListener mProgressCancelListener,
                                 boolean cancelable, V view) {
        super();
        this.context = context;
        this.mProgressCancelListener = mProgressCancelListener;
        this.cancelable = cancelable;
        mView = view;
    }

    /**
     * 显示加载页面
     */
    private void initProgressDialog() {
        if (mView != null) {
            mView.showLoading();
        }
    }

    /**
     * 显示主页面
     */
    private void dismissProgressDialog() {
        if (mView != null) {
            mView.showContentView();
            mView = null;
            context = null;
        }
    }

    /**
     * 显示Error页面
     */
    private void showErrorPage(){
        if(mView!=null){
            mView.showError();
            mView=null;
            context=null;
        }
    }

    /**
     * 显示空界面
     */
    private void showEmptyPage(){
        if(mView!=null){
            mView.showEmpty();
            mView=null;
            context=null;
        }
    }


    /**
     * 处理由Handler发出的消息
     *
     * @param msg
     */
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SHOW_PROGRESS_DIALOG:
                initProgressDialog();
                break;
            case DISMISS_PROGRESS_DIALOG:
                dismissProgressDialog();
                break;
            case SHOW_EMPTY:
                showEmptyPage();
                break;
            case SHOW_ERROR:
                showErrorPage();
                break;
        }
    }

    private Context mContext;   //接收一个Context

    public void setContext(Context context) {
        mContext = context;
    }
}
